const db=wx.cloud.database();
const app = getApp()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    list: [],
    nextTime: '暂无'  
  },
  // get(){
  //   wx.cloud.callFunction({
  //     name:"Dailymedicine"
  //   }).then(res=>{
  //     // console.log(res.result);
  //     // this.setData({
  //     //   list:res.result.data
  //     // })
  //     const now = new Date();
  //     const currentHours = now.getHours();
  //     const currentMinutes = now.getMinutes();
      
  //     // 处理数据，添加时间数值用于排序
  //     const processedList = res.result.data.map(item => {
  //       const [hours, minutes] = item.time.split(':').map(Number);
  //       const timeValue = hours * 60 + minutes;
  //       const currentTimeValue = currentHours * 60 + currentMinutes;
        
  //       return {
  //         ...item,
  //         timeValue,
  //         isPast: timeValue < currentTimeValue
  //       };
  //     });
      
  //     // 排序：未过期的在前按时间排序，已过期的在后按时间排序
  //     processedList.sort((a, b) => {
  //       if (a.isPast !== b.isPast) {
  //         return a.isPast ? 1 : -1;
  //       }
  //       return a.timeValue - b.timeValue;
  //     });
      
  //     // 找出下一个用药时间
  //     const nextItem = processedList.find(item => !item.isPast);
  //     const nextTime = nextItem ? nextItem.time : '暂无';
      
  //     this.setData({
  //       list: processedList,
  //       nextTime
  //     });
  //   })
  // },


  get() {
    wx.cloud.callFunction({
      name: "Dailymedicine",
      data:{
        account:app.globalData.account
      }
    }).then(res => {
      const now = new Date();
      const currentTimeValue = now.getHours() * 60 + now.getMinutes();
      
      // 处理数据并计算状态
      const processedList = res.result.data.map(item => {
        const [hours, minutes] = item.time.split(':').map(Number);
        const timeValue = hours * 60 + minutes;
        const isPast = timeValue < currentTimeValue;
        
 // 关键修改：更严格的可点击条件
 const clickable = !isPast && item.eat !== '已服用';

        return {
          ...item,
          timeValue,
          isPast,
          clickable, // 明确传递可点击状态
          // // 计算是否可点击
          // clickable: !isPast || (isPast && item.eat !== '已服用'),
          // 计算显示文本
          displayText: isPast ? 
            (item.eat === '已服用' ? '已服用' : '已超时') : 
            (item.eat === '已服用' ? '已服用' : '未服用')
        };
      });
      
      // 按时间排序（不再区分是否过期）
      processedList.sort((a, b) => a.timeValue - b.timeValue);
      
      // 找出下一个用药时间（第一个未服用且未过期的）
      const nextItem = processedList.find(item => !item.isPast && item.eat !== '已服用');
      const nextTime = nextItem ? nextItem.time : '暂无';
      
      this.setData({
        list: processedList,
        nextTime
      });
    });
  },

//
setupWatcher: function() {
  if (this.watcher) {
    this.watcher.close(); // 先关闭旧的监听
  }
  
  this.watcher = db.collection("dailymedicine").watch({
    onChange: (res) => {
      console.log("数据库变更:", res);
      this.get(); // 强制刷新数据
    },
    onError: (err) => {
      console.error("监听失败:", err);
      // 3秒后自动重试
      setTimeout(() => this.setupWatcher(), 3000);
    }
  });
},

//  // 这里定义方法 ↓
//  handleItemUpdate: function(e) {
//   const { id } = e.detail;
//   this.setData({
//     list: this.data.list.map(item => {
//       if (item._id === id) {
//         return {
//           ...item,
//           eat: "已服用",
//           clickable: false,
//           displayText: "已服用"
//         };
//       }
//       return item;
//     })
//   });
// },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.get();
    this.setupWatcher(); // 改用封装的方法
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

    this.get();
    // 每 30 秒检查一次（即使 watch 失效，也能保证数据更新）
    this.refreshInterval = setInterval(() => this.get(), 30000);
  },
  
  onHide: function() {
    clearInterval(this.refreshInterval); // 页面隐藏时清除定时器
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    this.setupWatcher(); // 改用封装的方法
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    
  }
})